home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / chkparm.c < prev    next >
C/C++ Source or Header  |  1996-07-10  |  3KB  |  95 lines

  1.  /********************************************************
  2.  *                                                       *
  3.  *                    CHKPARM                            *
  4.  *             Check verb parametrs.                     *
  5.  *                                                       *
  6.  * INPUT : pointer to the verb record, pointer           *
  7.  *         to the communication area.                    *
  8.  * OUTPUT: fill comm. area or set the return code        *
  9.  *         in the verb if function was failed.           *
  10.  *                                                       *
  11.  * CopyRight 1995. Nicholas Poljakov all rights reserved.*
  12.  *                                                       *
  13.  ********************************************************/
  14. #include <cma.h>
  15. #include <state1.h>
  16. #include <lucb.h>
  17. #include <tcb.h>
  18. #include <rcb.h>
  19. #include <psp.h>
  20. #include <common.h>
  21. #include <stdio.h>
  22. #include <string.h>
  23.  
  24. struct psp psp_ini;
  25.  
  26. chkparm(s_ptr, ar)
  27. struct com *s_ptr;
  28. struct cma *ar;
  29. {
  30.     struct rcb *p_rcb;
  31.     struct tcb *p_tcb;
  32.     struct lucb *p_lucb;
  33.     char tid[8];
  34.     unsigned long rid;
  35.     char *p;
  36.     int i;
  37.  
  38. #if OS_TYPE == 1
  39. /*********  Trace facility **********/
  40. unsigned int rtype;   /* type of record */
  41. unsigned int pnum;    /* point number */
  42. char pname[8];        /* name of module */
  43. char *drec;       /* record for dump */
  44. int  lenr;            /* record length */
  45.  
  46. rtype = INPROC;
  47. strcpy(pname, "chkparm");
  48. pnum = 1;
  49. lenr = 0;
  50. drec = NULL;
  51. gtf(rtype, pname, pnum, drec, lenr);
  52. /***********************************/
  53. #endif
  54.  
  55.     p = s_ptr -> tp_id;
  56.     for (i = 0; i < 8; i++) {
  57.         tid[i] = *(p + i);
  58.     }
  59.     rid = s_ptr -> conv_id;
  60.  
  61.      /* looking for an appopriate LUCB */
  62.  
  63.       p_lucb = psp_ini.lucb_list_ptr; /* We've got only one LUCB */
  64.  
  65.      /* searching for an appopriate TCB */
  66.  
  67.        p_tcb = p_lucb ->tcb_list_ptr;
  68.        while (p_tcb != NULL) {
  69.        if (memcmp(p_tcb->tcb_id, tid, 8) == 0)
  70.                 break;
  71.            p_tcb = p_tcb->next;
  72.        }
  73.        if (p_tcb == NULL) {
  74.         s_ptr->prim_rc = PARAMETR_CHECK;
  75.         s_ptr->sec_rc = BAD_TP_ID;
  76.             return(-1);
  77.        }
  78.      /* searching for an appopriate RCB */
  79.  
  80.        p_rcb = p_tcb ->rcb_list_ptr;
  81.        while (p_rcb != NULL) {
  82.        if (rid == p_rcb -> rcb_id)
  83.                 break;
  84.            p_rcb = p_rcb->next;
  85.        }
  86.        if (p_rcb == NULL) {
  87.         s_ptr->prim_rc = PARAMETR_CHECK;
  88.         s_ptr->sec_rc = BAD_CONV_ID;
  89.             return(-1);
  90.        }
  91.        ar -> p_tcb = p_tcb;
  92.        ar -> p_rcb = p_rcb;
  93.        return(0);
  94. }
  95.